"""Definition of the Condiciones content type
"""

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.Archetypes import utils
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata
from Products.ATContentTypes.content.base import ATCTContent, ATCTFolder

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import ICondiciones
from guegue.alcaldias.config import PROJECTNAME


CondicionesSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Titulo',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Breve descripcion',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción del hermanamiento.')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Condiciones y/o Situación Actual',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="Condiciones y/o Situación Actual")),
    atapi.TextField('problemas',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Problemas Identificados',
                                label_msgid="label_entry_problemas",
                                description_msgid="help_entry_problemas",
                                i18n_domain="guegue.alcaldias",
                                description="Problemas Identificados")),
    atapi.StringField('proyecto',
                searchable=1,
                isMetadata=0,
		relationship = 'Proyecto',
                vocabulary="getProyectos",
                #widget=atapi.ReferenceWidget(
                widget=atapi.PicklistWidget(
              			label='Proyectos relacionados',
		                label_msgid="label_entry_proyecto",
                		description_msgid="help_entry_proyecto",
		                i18n_domain="guegue.alcaldias",
				#addable = 1, 
                		description='Proyectos')),
    atapi.FileField('adjunto',
              searchable=0,
              required=0,
              widget=atapi.FileWidget(label='Archivo adjunto',
                                label_msgid="label_entry_adjunto",
                                description_msgid="help_entry_adjunto",
                                i18n_domain="guegue.alcaldias",
                                description='Puede adjuntar un archivo relacionado')),
))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

#CondicionesSchema['title'].storage = atapi.AnnotationStorage()
#CondicionesSchema['description'].storage = atapi.AnnotationStorage()

schemata.finalizeATCTSchema(CondicionesSchema, moveDiscussion=False)

class Condiciones(base.ATCTContent):
    """Tipo de datos para condiciones habitacionales"""
    implements(ICondiciones)

    def getProyectos(self):
        dl = utils.DisplayList()
        linklist = self.portal_catalog.searchResults(portal_type='Proyecto')
        for link in linklist:
            dl.add(link['id'], link['Title'])
        return dl

    portal_type = "Condiciones"
    schema = CondicionesSchema

    #title = atapi.ATFieldProperty('title')
    #description = atapi.ATFieldProperty('description')

atapi.registerType(Condiciones, PROJECTNAME)
